The present disclosure is generally directed to techniques for assigning workloads and, more specifically, to techniques for assigning user workloads to application servers.
In general, cloud computing refers to Internet-based computing where shared resources, software, and information are provided to users of computer systems and other electronic devices (e.g., mobile phones) on demand, similar to the electricity grid. Adoption of cloud computing has been aided by the widespread utilization of virtualization, which is the creation of a virtual (rather than actual) version of something, e.g., an operating system, a server, a storage device, network resources, etc. A virtual machine (VM) is a software implementation of a physical machine (PM), e.g., a computer system, that executes instructions like a PM. VMs are usually categorized as system VMs or process VMs. A system VM provides a complete system platform that supports the execution of a complete operating system (OS). In contrast, a process VM is usually designed to run a single program and support a single process. A VM characteristic is that application software running on the VM is limited to the resources and abstractions provided by the VM. System VMs (also referred to as hardware VMs) allow the sharing of the underlying PM resources between different VMs, each of which executes its own OS. The software that provides the virtualization and controls the VMs is typically referred to as a VM monitor (VMM) or hypervisor. A hypervisor may run on bare hardware (Type 1 or native VMM) or on top of an operating system (Type 2 or hosted VMM).
Cloud computing provides a consumption and delivery model for information technology (IT) services based on the Internet and involves over-the-Internet provisioning of dynamically scalable and usually virtualized resources. Cloud computing is facilitated by ease-of-access to remote computing websites (e.g., via the Internet or a private corporate network) and frequently takes the form of web-based tools or applications that a cloud consumer can access and use through a web browser, as if the tools or applications were a local program installed on a computer system of the cloud consumer. Commercial cloud implementations are generally expected to meet quality of service (QoS) requirements of consumers and typically include service level agreements (SLAs). Cloud consumers avoid capital expenditures by renting usage from a cloud vendor (i.e., a third-party provider). In a typical cloud implementation, cloud consumers consume resources as a service and pay only for resources used.
Enterprise software is purposed-designed computer software that is implemented to satisfy the needs of an organization, as contrasted with the needs of individual users. An organization may take the form of a business, a school, an interest-based user group or a club, a retailer, or a government, etc. Today, enterprise software is an integral part of information systems. Services provided by enterprise software are typically business-oriented tools, e.g., online shopping and online payment processing, interactive product catalogs, automated billing systems, security, enterprise content management, information technology (IT) service management, customer relationship management, enterprise resource planning, business intelligence, project management, collaboration, human resource management, manufacturing, enterprise application integration, and enterprise forms automation. As enterprises have similar departments and systems in common, enterprise software is often available as a suite of customizable programs. Generally, the complexity of these tools requires specialist capabilities and specific knowledge.
The term ‘enterprise software’ may be used to describe a collection of computer programs with common business applications, modeling tools for modeling how an entire organization works, and development tools for building applications unique to an organization. Enterprise software is intended to address an enterprise-wide problem, as contrasted with a departmental problem. Enterprise application software aims to improve productivity and efficiency of an organization by providing business logic support functionality. Enterprise application software may be utilized to perform business functions such as order processing, procurement, production scheduling, customer information management, energy management, and accounting. Enterprise applications are usually hosted on servers and provide simultaneous services to a large number of users, typically over a computer network. Enterprise software can be categorized by business function. Enterprise management categories include: accounting software, business intelligence, business process management, content management, customer relationship management, database, enterprise resource planning, and enterprise asset management.